#include<stdio.h>
#include<string.h>

void swap(char* p1,char* p2,int width)
{
	int i=0;
	char t=0;
	for(i-0;i<width;i++)
	{
		t=*(p1+i);
		*(p1+i)=*(p2+i);
		*(p2+i)=t;
	}
}

void my_sort(void* base,int sz,int width,int (*cmp)(const void* a,const void* b))
{
	int i=0,j=0;
	for(i=0;i<sz-1;i++)
	{
		int flag=1;
		for(j=0;j<sz-1-i;j++)
		{
			if(cmp((char*)base+j*width,(char*)base+(j+1)*width)>0)
			{
				swap((char*)base+j*width,(char*)base+(j+1)*width,width);
				flag=0;
			}
		}
		if(flag)
			break;
	}
}

int cmp(const void* a,const void* b)
{
	return *(int*)a-*(int*)b;
}

void test()
{
	int arr[]={9,8,7,6,5,4,3,2,1,0};
	int sz=sizeof(arr)/sizeof(int);
	my_sort(arr,sz,sizeof(int),cmp);
	int i=0;
	for(i=0;i<sz;i++)
	{
		printf("%d ",arr[i]);
	}
}

int main()
{
	test();
	return 0;
}
